<?php

use think\Request;

/**
 * 文件路径自动拼接域名
 * @param string $value 文件在服务器的路径
 * @return string
 * */
function splicing_domain($value){
    if (empty($value)) return "";
    $value = (string) $value;
    $parse_url=parse_url($value);
    if (empty($parse_url['host'])) {
        $imageUrl = $parse_url['path'];
        $xie='';
        if(substr( $imageUrl, 0, 1 )!='/') $xie='/';
        return protocol_name() . '://' . $_SERVER['SERVER_NAME'] .$xie. $imageUrl;
    }else{
        return $value;
    }
}

/**
 * 获取当前请求协议
 * @return string
 * */
function protocol_name(){
    return (int)$_SERVER['SERVER_PORT'] == 80 ? 'http' : 'https';
}

//富文本编辑器内的图片加域名
if(!function_exists("get_image_url"))
{
    function get_image_url($content = "", $suffix = "")
    {
        // 定义域名
        $domain = $suffix;
        // 匹配 img 标签中的 src 属性，提取其中的 URL
        $pattern = '/<img.*?src=[\'"](.*?)[\'"].*?>/i';
        preg_match_all($pattern, $content, $matches);

        // 遍历所有匹配到的 URL
        foreach ($matches[0] as $key => $imgTag) {
            $url = $matches[1][$key];
            // 如果当前 URL 不包含域名，则添加域名
            if (empty(parse_url($url)['host'])) {
                $new_url = $domain . $url;
                // 构造新的 img 标签，包含新 URL 和样式
                $new_imgTag = $imgTag;

                // 替换 src 属性中的 URL
                $new_imgTag = str_replace($url, $new_url, $new_imgTag);

                // 使用正则表达式匹配并替换 style 属性
                $new_imgTag = preg_replace('/style=[\'"][^\'"]*[\'"]/', '', $new_imgTag);

                // 在 img 标签末尾添加 style 属性
                $new_imgTag = str_replace('<img', '<img style="width: 100%; height: auto;"', $new_imgTag);

                // 替换原始的 img 标签
                $content = str_replace($imgTag, $new_imgTag, $content);
            }else{
                $new_url = $domain . $url;
                // 构造新的 img 标签，包含新 URL 和样式
                $new_imgTag = $imgTag;

                // 替换 src 属性中的 URL
                $new_imgTag = str_replace($url, $new_url, $new_imgTag);

                // 使用正则表达式匹配并替换 style 属性
                $new_imgTag = preg_replace('/style=[\'"][^\'"]*[\'"]/', '', $new_imgTag);

                // 在 img 标签末尾添加 style 属性
                $new_imgTag = str_replace('<img', '<img style="width: 100%; height: auto;"', $new_imgTag);

                // 替换原始的 img 标签
                $content = str_replace($imgTag, $new_imgTag, $content);
            }
        }
        return $content;
    }
//    function get_image_url($content = "", $suffix = "")
//    {
//        // 定义域名
//        $domain = $suffix;
//        // 假设 $content 包含富文本内容，需要处理其中的图片路径
//        // 匹配img标签中的src属性，提取其中的URL
/*        $pattern = '/<img.*?src=[\'"](.*?)[\'"].*?>/i';*/
//        preg_match_all($pattern, $content, $matches);
//        // 遍历所有匹配到的URL
//        foreach ($matches[1] as $url) {
//            // 如果当前URL不包含域名，则添加域名
//            if (empty(parse_url($url)['host'])){
//                $new_url = $domain . $url;
//                // 替换原始的URL
//                $content = str_replace($url, $new_url, $content);
//            }
//        }
//        return $content;
//    }
//    function get_image_url($content = "", $suffix = "")
//    {
//        // 定义域名
//        $domain = $suffix;
//        // 匹配 img 标签中的 src 属性，提取其中的 URL
/*        $pattern = '/<img.*?src=[\'"](.*?)[\'"].*?>/i';*/
//        preg_match_all($pattern, $content, $matches);
//
//        // 遍历所有匹配到的 URL
//        foreach ($matches[0] as $key => $imgTag) {
//            $url = $matches[1][$key];
//            // 如果当前 URL 不包含域名，则添加域名
//            if (empty(parse_url($url)['host'])) {
//                $new_url = $domain . $url;
//                // 构造新的 img 标签，包含新 URL 和样式
//                $new_imgTag = $imgTag;
//
//                // 替换 src 属性中的 URL
//                $new_imgTag = str_replace($url, $new_url, $new_imgTag);
//
//                // 检查是否已有 style 属性
//                if (strpos($new_imgTag, 'style=') !== false) {
//                    dump('12');die();
//                    // 使用正则表达式替换 style 属性中的内容
//                    $new_imgTag = preg_replace('/style=[\'"]([^\'"]*)[\'"]/', 'style="$1; width: 100%; height: auto;"', $new_imgTag);
//                } else {
//                    // 在 img 标签末尾添加 style 属性
//                    $new_imgTag = str_replace('<img', '<img style="width: 100%; height: auto;"', $new_imgTag);
//                }
//
//                // 替换原始的 img 标签
//                $content = str_replace($imgTag, $new_imgTag, $content);
//            }else{
//                $new_url = $domain . $url;
//                // 构造新的 img 标签，包含新 URL 和样式
//                $new_imgTag = $imgTag;
//
//                // 替换 src 属性中的 URL
//                $new_imgTag = str_replace($url, $new_url, $new_imgTag);
//
//                // 检查是否已有 style 属性
//                if (strpos($new_imgTag, 'style=') !== false) {
//                    // 使用正则表达式替换 style 属性中的内容
//                    $new_imgTag = preg_replace('/style=[\'"]([^\'"]*)[\'"]/', 'style="$1; width: 100%; height: auto;"', $new_imgTag);
//                } else {
//                    // 在 img 标签末尾添加 style 属性
//                    $new_imgTag = str_replace('<img', '<img style="width: 100%; height: auto;"', $new_imgTag);
//                }
//
//                // 替换原始的 img 标签
//                $content = str_replace($imgTag, $new_imgTag, $content);
//            }
//        }
//
//        return $content;
//    }
}

//富文本编辑器内的视频加域名
if(!function_exists("get_video_url"))
{
    function get_video_url($content = "", $suffix = "")
    {
        // 定义域名
        $domain = $suffix;
        // 假设 $content 包含富文本内容，需要处理其中的视频路径
        // 匹配video标签中的src属性，提取其中的URL
        $pattern = '/<video.*?src=[\'"](.*?)[\'"].*?>/i';
        preg_match_all($pattern, $content, $matches);
        // 遍历所有匹配到的URL
        foreach ($matches[1] as $url) {
            // 如果当前URL不包含域名，则添加域名
            if (empty(parse_url($url)['host'])){
                $new_url = $domain . $url;
                // 替换原始的URL
                $content = str_replace($url, $new_url, $content);
            }
        }
        return $content;
    }
}

if(!function_exists("get_code"))
{
    function get_code()
    {
        return rand(100000,999999);
    }
}

//对象转数组
if(!function_exists("object_to_array")){
    function object_to_array($obj)
    {
        $arr = is_object($obj) ? get_object_vars($obj) : $obj;
        foreach ($arr as $key => $val) {
            $val = (is_array($val) || is_object($val)) ? object_to_array($val) : $val;
            $arr[$key] = $val;
        }
        return $arr;
    }
}

if(!function_exists("format_number")){
    function format_number($number) {
        if ($number >= 10000) {
            $formatted_number = round($number / 10000, 1) . 'w';
        } else {
            $formatted_number = $number;
        }
        return $formatted_number;
    }
}

/**
 * 自动生成订单号号
 */
if(!function_exists("order_no")){
    function order_no($type){
         $order_no = $type.date('YmdHis').rand(100000, 999999);
         return $order_no;
    }
}

/**
 * 提取富文本字符串的纯文本,并进行截取;
 * @param string  需要进行截取的富文本字符串
 * @param int  需要截取多少位
 */
if(!function_exists("StringToText")){
    function StringToText($string,$num){
        // 移除 HTML 标签
        $text = strip_tags($string);

        // 移除 HTML 实体，例如 &nbsp;
        $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');

        // 替换多个空格和新行
        $text = preg_replace('/\s+/', ' ', $text);

        // 截取指定长度的文本
        if (mb_strlen($text) > $num) {
            $text = mb_substr($text, 0, $num) . '...';
        }
        return $text;
    }
}

/**
 * 微信展示时间的方法
 * @param $addTime
 * @return string
 */
if(!function_exists("getChatTimeStr")){
    function getChatTimeStr($addTime) {
        $nowTime = time();

        if($addTime > $nowTime) {
            return "";
        }

        //返回的时间
        $timeStr = "";
        //获取当前时间
        $addTime = explode(',', date('Y,n,j,w,a,h,i,y', $addTime));//年，月，日，星期，上下午，时，分
        $nowTime = explode(',', date('Y,n,j,w,a,h,i,y', $nowTime));

        $dayPerMonthAddTime = getDayPerMonth($addTime[0]);
        $week = array(0=>"星期日",1=>"星期一",2=>"星期二",3=>"星期三",4=>"星期四",5=>"星期五",6=>"星期六");

        //如果时间差小于一天的,显示（上午 时间） / （下午 时间）
        if($addTime[0] == $nowTime[0] && $addTime[1] == $nowTime[1] && $addTime[2] == $nowTime[2]) {
            $timeStr .= $addTime[5] . ":" . $addTime[6];
        } else if(($addTime[0] == $nowTime[0] && $addTime[1] == $nowTime[1] && $addTime[2] == $nowTime[2]-1)
            || ($addTime[0] == $nowTime[0] && $nowTime[1]-$addTime[1] == 1 && $dayPerMonthAddTime[$addTime[1]] == $addTime[2] && $nowTime[2] == 1)
            || ($nowTime[0]-$addTime[0] == 1 && $addTime[1] == 12 && $addTime[2] == 31 && $nowTime[1] == 1 && $nowTime[2] == 1)) { //如果时间差在昨天,三种情况（同一月份内跨一天、月末跨越到月初、年末跨越到年初）显示格式：昨天 时:分 上午/下午
            $timeStr .= "昨天 " . $addTime[5] . ":" . $addTime[6] . " ";
        } else if(($addTime[0] == $nowTime[0] && $addTime[1] == $nowTime[1] && $nowTime[2] - $addTime[2] < 7)
            || ($addTime[0] == $nowTime[0] && $nowTime[1]-$addTime[1] == 1 && $dayPerMonthAddTime[$addTime[1]]-$addTime[2]+$nowTime[2] < 7
                || ($nowTime[0]-$addTime[0] == 1 && $addTime[1] == 12 && $nowTime[1] == 1 && 31-$addTime[2]+$nowTime[2] < 7))) { //如果时间差在一个星期之内的,也是三种情况，显示格式：星期 时:分 上午/下午

            $timeStr .= $week[$addTime[3]] . " " . $addTime[5] . ":" . $addTime[6];
        } else { //显示格式：月/日/年 时:分 上午/下午
            $timeStr .= $addTime[1] . "/" . $addTime[2] . "/" . $addTime[7] . " " . $addTime[5] . ":" . $addTime[6];
        }
        if($addTime[4] == "am") {
            $timeStr .= " 上午";
        } else if($addTime[4] == "pm") {
            $timeStr .= " 下午";
        }


        return $timeStr;
    }
}


//根据年份获取每个月份的总天数和每年最后一个月的天数
if(!function_exists("getDayPerMonth")){
    function getDayPerMonth($year) {
        $arr = array(
            1 => 31,
            3 => 31,
            4 => 30,
            5 => 31,
            6 => 30,
            7 => 31,
            8 => 31,
            9 => 30,
            10 => 31,
            11 => 30,
            12 => 31
        );
        //闰年
        if(($year%4==0&&$year%100!=0) || ($year%400==0)) {
            $arr[2] = 29;
        } else {
            $arr[2] = 28;
        }
        return $arr;
    }
}

function orderNumbers($a, $b) {
    $min = min($a, $b);
    $max = max($a, $b);
    return [$min, $max];
}

function replaceSensitiveWords($title, $sensitiveWords) {
    foreach ($sensitiveWords as $word) {
        $pattern = '/' . preg_quote($word, '/') . '/i'; // 构建忽略大小写的正则表达式
        $title = preg_replace($pattern, '*', $title);
    }
    return $title;
}

function containsSensitiveWords($text, $sensitiveWords) {
    foreach ($sensitiveWords as $word) {
        if (stripos($text, $word) !== false) { // 使用 stripos 忽略大小写
            return true;
        }
    }
    return false;
}

function getVideoThumbnail($videoPath,$time = '00:00:01') {

    $videoPath = realpath('.'.$videoPath);
    $thumbnailPath = str_replace('.mp4','.jpg',$videoPath);
    // 使用FFmpeg从视频中提取封面
    $command = "ffmpeg6 -i {$videoPath} -ss $time -vframes 1 -q:v 2 {$thumbnailPath} 2>&1";
    exec($command, $output, $returnVar);
    // 检查命令是否成功执行
    if ($returnVar !== 0) {
        // 如果失败，打印输出以进行调试
        echo "Error generating thumbnail:\n";
        foreach ($output as $line) {
            echo $line . "\n";
        }
        return false;
    }
    // 封面已成功生成
    return true;
}

function is_mobile($phone){
    $check = '/^(1(([35789][0-9])|(47)))\d{8}$/';
    if (preg_match($check, $phone)) {
        return true;
    } else {
        return false;
    }
}

function containsPhoneNumber($input) {
    // 允许每个数字之间有任意数量的非数字字符
    $check = '/^(1(([35789][0-9])|(47)))\d{8}$/';
    // 去掉所有非数字字符，然后用纯数字进行匹配
    $cleanedInput = preg_replace('/\D+/', '', $input);
    // 检查长度是否为11位
    if (strlen($cleanedInput) === 11 && preg_match($check, $cleanedInput)) {
        return true;
    } else {
        return false;
    }
}

function removeValueFromString($string, $valueToRemove) {
    // 将字符串转换为数组
    $array = explode(',', $string);

    // 移除指定的值
    $array = array_diff($array, [$valueToRemove]);

    // 将数组转换回字符串
    $result = implode(',', $array);

    return $result;
}

/**
 * 替换手机号码中间四位数字
 * @param  [type] $str [description]
 * @return [type]      [description]
 */
function hide_phone($str){
    $resstr = substr_replace($str,'****',3,4);
    return $resstr;
}





